将变量传递给链接服务器查询 您所在的位置:网站首页 sql server like中引用变量 将变量传递给链接服务器查询

将变量传递给链接服务器查询

2024-06-28 19:57| 来源: 网络整理| 查看: 265

将变量传递给链接服务器查询 项目06/20/2023

本文介绍如何将变量传递给链接服务器查询。

原始产品版本:SQL Server联机丛书 原始 KB 编号: 314520

摘要

查询链接服务器时,经常执行使用 、 OPENROWSET或 OPENDATASOURCE 语句的OPENQUERY传递查询。 可以查看 SQL Server 联机丛书中的示例,了解如何使用预定义的 Transact-SQL 字符串执行此操作,但没有有关如何将变量传递给这些函数的示例。 本文提供三个示例,说明如何将变量传递给链接服务器查询。

若要将变量传递给传递函数之一,必须生成动态查询。

包含引号的任何数据都需要特定处理。

传递基本值

如果基本 Transact-SQL 语句已知,但必须传入一个或多个特定值,请使用类似于以下示例的代码:

DECLARE @TSQL varchar(8000), @VAR char(2) SELECT @VAR = 'CA' SELECT @TSQL = 'SELECT * FROM OPENQUERY(MyLinkedServer,''SELECT * FROM pubs.dbo.authors WHERE state = ''''' + @VAR + ''''''')' EXEC (@TSQL) 传递整个查询

当必须传入整个 Transact-SQL 查询或链接服务器的名称 (或两者) 时,请使用类似于以下示例的代码:

DECLARE @OPENQUERY nvarchar(4000), @TSQL nvarchar(4000), @LinkedServer nvarchar(4000) SET @LinkedServer = 'MyLinkedServer' SET @OPENQUERY = 'SELECT * FROM OPENQUERY('+ @LinkedServer + ',''' SET @TSQL = 'SELECT au_lname, au_id FROM pubs..authors'')' EXEC (@OPENQUERY+@TSQL) 使用Sp_executesql存储过程

若要避免使用多层引号,请使用类似于以下示例的代码:

DECLARE @VAR char(2) SELECT @VAR = 'CA' EXEC MyLinkedServer.master.dbo.sp_executesql N'SELECT * FROM pubs.dbo.authors WHERE state = @state', N'@state char(2)', @VAR 另请参阅

有关详细信息,请参阅下列主题:

OPENROWSET (Transact-SQL) OPENQUERY (Transact - SQL) OPENDATASOURCE (Transact-SQL) sp_executesql (Transact-SQL)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有